package views

//
//import (
//	"fmt"
//	"github.com/charmbracelet/lipgloss"
//	"log"
//	"strings"
//
//	btable "github.com/charmbracelet/bubbles/table"
//	tea "github.com/charmbracelet/bubbletea"
//	"github.com/evertras/bubble-table/table"
//)
//
//const (
//	columnKeyID = "id"
//
//	numCols = 100
//	numRows = 10
//	idWidth = 5
//
//	colWidth = 3
//	maxWidth = 30
//)
//
//type ScrollModel struct {
//	scrollableTable table.ScrollModel
//}
//
//func colKey(colNum int) string {
//	return fmt.Sprintf("%d", colNum)
//}
//
//func genRow(id int) table.Row {
//	data := table.RowData{
//		columnKeyID: fmt.Sprintf("ID %d", id),
//	}
//
//	for i := 0; i < numCols; i++ {
//		data[colKey(i)] = colWidth
//	}
//
//	return table.NewRow(data)
//}
//
//func NewModel() ScrollModel {
//	var Rows []table.Row
//	s := btable.DefaultStyles()
//	s.Header = s.Header.
//		BorderStyle(lipgloss.NormalBorder()).
//		BorderForeground(lipgloss.Color("240")).
//		BorderBottom(true).
//		Bold(false)
//	s.Selected = s.Selected.
//		Foreground(lipgloss.Color("229")).
//		Background(lipgloss.Color("57")).
//		Bold(false)
//
//	for i := 0; i < numRows; i++ {
//		row := genRow(i)
//		row.Style = s.Selected
//		Rows = append(Rows, row)
//	}
//
//	//s := btable.DefaultStyles()
//	//s.Header = s.Header.
//	//	BorderStyle(lipgloss.NormalBorder()).
//	//	BorderForeground(lipgloss.Color("240")).
//	//	BorderBottom(true).
//	//	Bold(false)
//	//s.Selected = s.Selected.
//	//	Foreground(lipgloss.Color("229")).
//	//	Background(lipgloss.Color("57")).
//	//	Bold(false)
//	Cols := []table.Column{
//		table.NewColumn(columnKeyID, "ID", idWidth),
//	}
//
//	for i := 0; i < numCols; i++ {
//		Cols = append(Cols, table.NewColumn(colKey(i), colKey(i+1), colWidth))
//	}
//
//	t := table.New(Cols).
//		WithRows(Rows).
//		WithMaxTotalWidth(maxWidth).
//		WithHorizontalFreezeColumnCount(1).
//		WithStaticFooter("A footer").
//		Focused(true)
//
//	return ScrollModel{
//		scrollableTable: t,
//	}
//}
//
//func (m ScrollModel) Init() tea.Cmd {
//	return nil
//}
//
//func (m ScrollModel) Update(msg tea.Msg) (tea.ScrollModel, tea.Cmd) {
//	var (
//		cmd  tea.Cmd
//		cmds []tea.Cmd
//	)
//
//	m.scrollableTable, cmd = m.scrollableTable.Update(msg)
//	cmds = append(cmds, cmd)
//
//	switch msg := msg.(type) {
//	case tea.KeyMsg:
//		switch msg.String() {
//		case "ctrl+c", "esc", "q":
//			cmds = append(cmds, tea.Quit)
//		}
//	}
//
//	return m, tea.Batch(cmds...)
//}
//
//func (m ScrollModel) View() string {
//	body := strings.Builder{}
//
//	body.WriteString("A scrollable table\nPress shift+left or shift+right to scroll\nPress q or ctrl+c to quit\n\n")
//
//	body.WriteString(m.scrollableTable.View())
//
//	return body.String()
//}
//
//func main() {
//	p := tea.NewProgram(NewModel())
//
//	if err := p.Start(); err != nil {
//		log.Fatal(err)
//	}
//}
